로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
06 레코드 출력하기(HTML 템플릿 렌더링) | ✅ 편저: 코담 운영자
Django 튜토리얼 #6 - 레코드 출력하기 (HTML 템플릿 렌더링)
🔗 소스
1. 강의 목표
- 기존에 Django Shell에서 추가한 Tour 객체들을 실제 웹 페이지 상에서 출력해본다.
- Django Template Language(DTL)를 이용해 HTML에서 동적 데이터를 반복 출력하는 법을 배운다.
2. index 뷰 함수 수정 (views.py)
from django.shortcuts import render
from .models import Tour
# HTML 렌더링 방식으로 변경
def index(request):
tours = Tour.objects.all() # DB에서 전체 투어 레코드 조회
context = {
"tours": tours
}
return render(request, "tours/index.html", context)
HttpResponse
대신render()
사용- HTML 템플릿과 context(데이터)를 연결하여 브라우저에 응답
3. 템플릿 파일 작성 (templates/tours/index.html)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Asia Tours</title>
</head>
<body>
<h1>2025년 6월 아시아 투어 일정</h1>
<ul>
{% for tour in tours %}
<li>{{tour}}</li>
{% endfor %}
</ul>
</body>
</html>
✅ 코드 설명
<!DOCTYPE html>
: HTML5 문서임을 선언<html lang="ko">
: 한국어 문서라는 의미<h1>
: 페이지 제목{% for tour in tours %}
~{% endfor %}
: 전달된tours
QuerySet을 반복{{ tour }}
:Tour
모델의__str__()
메서드 결과가 출력됨
4. 템플릿 경로 구조
asatoursagency/
├── templates/
│ └── tours/
│ └── index.html
- 앱 내부에
templates
디렉터리 생성 후, 하위에tours
폴더 생성 render()
함수 내 템플릿 경로와 정확히 일치해야 함
5. 결과 확인
- 서버 실행 후 http://127.0.0.1:8000 접속
- HTML 페이지에서 투어 레코드들이 목록 형태로 출력됨
예시 출력:
ID:1: From Japan To China, 10 nights costs $1500
ID:2: From Vietnam To South Korea, 15 nights costs $20500
ID:3: From Malaysia To Japan, 7 nights costs $1000
다음 강의 예고
- Django의 관리자(Admin) 대시보드를 이용해 레코드를 직접 추가/수정하는 기능 학습 예정